home *** CD-ROM | disk | FTP | other *** search
/ Sigcat 1995 / Sigcat 95 - System G Corporation.ISO / insight.mst < prev    next >
Encoding:
Text File  |  1995-02-08  |  26.6 KB  |  855 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit Sample 1
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'mscpydis.inc'    ''System
  9. '$INCLUDE 'msdetect.inc'
  10.  
  11. GLOBAL DDBFILE$
  12. GLOBAL PROGMAN_GROUP$
  13. GLOBAL PROGMAN_ITEM$
  14. GLOBAL USER_PATH$
  15. GLOBAL DISKETTE$
  16. GLOBAL PUBLISHER_ICON$
  17. GLOBAL ALLOW_NETWORK$
  18. GLOBAL REMOVE_PREVIOUS$
  19. GLOBAL NETEXIST$
  20. GLOBAL VIDEO$
  21.  
  22. REMOVE_PREVIOUS$ = "1"
  23.  
  24. '$INCLUDE 'insight.inc'
  25. '$INCLUDE 'insnet.inc'
  26.  
  27. ''Dialog ID's
  28. CONST WELCOME       = 100
  29. CONST ASKQUIT       = 200
  30. CONST DESTPATH      = 300
  31. CONST EXITFAILURE   = 400
  32. CONST EXITQUIT      = 600
  33. CONST EXITSUCCESS   = 700
  34. CONST OPTIONS       = 800
  35. CONST APPHELP       = 900
  36. CONST RESTARTI      = 2600
  37. CONST RESTARTII     = 2700
  38. CONST VIDEOUPDATA   = 2800
  39. CONST BADPATH       = 6400
  40. CONST BIGOPTIONS    = 4000
  41. CONST EXECUTABLES   = 4100
  42. CONST DEMOS         = 4200
  43. CONST NETWORK       = 4300
  44. CONST NETPATH       = 4400
  45. CONST DISKSPACE     = 4500
  46. CONST BADDRIVE      = 6500
  47. CONST BADDRIVE1     = 6510
  48. CONST BADDRIVE2     = 6520
  49. CONST CDDRIVE       = 6600
  50. CONST DISKDRIVE     = 6700
  51. CONST ADDUSER       = 6800
  52.  
  53. ''Bitmap ID
  54. CONST LOGO = 1
  55.  
  56. ''Query Performance
  57. CONST BASIC    = 1
  58. CONST FAST     = 2
  59. CONST VERYFAST = 3
  60.  
  61. GLOBAL DEFDEST$        ''Default destination directory.
  62. GLOBAL NETDEST$     ''Network destination directory.
  63. GLOBAL DRIVE$       ''CD-ROM Drive.
  64. GLOBAL OPTCUR$      ''Option selection from option dialog.
  65. GLOBAL MYSTR$       ''Just a string.
  66. GLOBAL NET$         ''If Network installation than "ON" else "OFF"
  67.  
  68. GLOBAL WinDir$
  69. GLOBAL WinSysDir$
  70.  
  71.  
  72. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  73. DECLARE FUNCTION GetDirectory (szPath$) AS STRING
  74. DECLARE FUNCTION ModifyDDB   LIB "mscuistf.dll" (szFile$, szNew$, d%) AS INTEGER
  75. DECLARE FUNCTION ModifyNetDDB   LIB "mscuistf.dll" (szInFile$, szOutFile$, szCD$) AS INTEGER
  76. DECLARE FUNCTION RemoveInsightFiles LIB "mscuistf.dll" (szRemove$) AS INTEGER
  77. DECLARE FUNCTION LongToAscii LIB "mscuistf.dll" (lNum&,szStr$) AS LONG
  78. DECLARE FUNCTION InsightMessageBox LIB "mscuistf.dll" (szStr$) AS INTEGER
  79. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  80. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  81. DECLARE SUB Reboot LIB "iniupd.dll"
  82. DECLARE FUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  83. DECLARE FUNCTION RebuildBigFiles LIB "mscuistf.dll" (Dest$) AS INTEGER
  84. DECLARE FUNCTION ShowMaximize LIB "mscuistf.dll" (hwnd%) AS INTEGER
  85.  
  86. DECLARE SUB Install (ftype%,Src$,Dest$,fnet%)
  87. DECLARE SUB AddOptFilesToCopyList (ftype%,Src$,Dest$)
  88. DECLARE SUB RecalcOptFiles (ftype%)
  89. DECLARE SUB AddInsightUser (wrkparm$,netparm$,cd$)
  90.  
  91. INIT:
  92.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  93.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  94.     wnd% = HwndFrame()
  95.  
  96.     SetBitmap CUIDLL$, LOGO
  97.     SetTitle "INSIGHT into Information - setup"
  98.  
  99.     wnd% = HwndFrame()
  100.     IF wnd% <> 0 THEN
  101.         i% = ShowMaximize(wnd%)
  102.     END IF
  103.  
  104.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  105.     IF szInf$ = "" THEN
  106.         szInf$ = GetSymbolValue("STF_CWDDIR") + "INSIGHT.INF"
  107.     END IF
  108.     ReadInfFile szInf$
  109.  
  110.     OPTCUR$ = "1"
  111.     DEFDEST$ = USER_PATH$
  112.  
  113. '$IFDEF DEBUG
  114.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  115.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  116.     IF IsDriveValid(WinDrive$) = 0 THEN
  117.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  118.         GOTO QUIT
  119.     END IF
  120. '$ENDIF ''DEBUG
  121.  
  122.     WinDir$ = GetWindowsDir()
  123.     WinSysDir$ = GetWindowsSysDir()
  124.  
  125.     IF VIDEO$ = "1" THEN
  126.  
  127.       WIN32ENABLED% = 0
  128.       MajorVer% = GetWindowsMajorVersion()
  129.       MinorVer% = GetWindowsMinorVersion()
  130.  
  131.       IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  132.           i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  133.           END
  134.       END IF
  135.  
  136.       IF OnWindowsNT() THEN
  137.             i% = DoMsgBox("This version of Video for Windows does not run on Windows NT.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  138.             END
  139.       END IF
  140.  
  141.     END IF '' VIDEO
  142.  
  143.  
  144. WELCOME:
  145.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  146.     IF sz$ = "CONTINUE" THEN
  147.         UIPop 1
  148.     ELSE
  149.         GOSUB ASKQUIT
  150.         GOTO WELCOME
  151.     END IF
  152.  
  153. '**************************************************************************
  154. '**      Check if this is an addition of user to exsiting installation
  155. '**************************************************************************
  156.     IF NETEXIST$ = "YES" THEN
  157.         NET$ = "ON"
  158.         GOTO MAINOPTIONS
  159.     END IF
  160.  
  161.     IF ALLOW_NETWORK$ <> "1" THEN
  162.         NET$ = "OFF"
  163.         GOTO PATHS
  164.     END IF
  165.  
  166. '**************************************************************************
  167. '**      Do you want a Network version ???                               **
  168. '**************************************************************************
  169.  
  170. NETWORK:
  171.     SetSymbolValue "CheckItemsIn", ""
  172.     AddListItem "CheckItemsIn", "OFF"
  173. GETNETWORK:
  174.     sz$ = UIStartDlg(CUIDLL$, NETWORK, "FCheckDlgProc", APPHELP, HELPPROC$)
  175.     NET$   = GetListItem ("CheckItemsOut",1)
  176.  
  177.     IF sz$ = "CONTINUE" THEN
  178.         UIPop(1)
  179.     ELSEIF sz$ = "REACTIVATE" THEN
  180.         GOTO GETNETWORK
  181.     ELSEIF sz$ = "BACK" THEN
  182.         UIPop 1
  183.         GOTO WELCOME
  184.     ELSE
  185.         GOSUB ASKQUIT
  186.         GOTO NETWORK
  187.     END IF
  188.  
  189. PATHS:
  190.  
  191. '**************************************************************************
  192. '**      What is the path to install the application into ???            **
  193. '**************************************************************************
  194.  
  195.     SetSymbolValue "EditTextIn", DEFDEST$
  196.     SetSymbolValue "EditFocus", "END"
  197. GETPATH:
  198.     SetSymbolValue "EditTextLimit", ""
  199.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  200.     DEFDEST$ = GetSymbolValue("EditTextOut")
  201.  
  202.     IF sz$ = "CONTINUE" THEN
  203.         IF IsDirWritable(DEFDEST$) = 0 THEN
  204.             GOSUB BADPATH
  205.             GOTO GETPATH
  206.         ELSEIF IsDriveNetwork(MID$(DEFDEST$,1,1)) = 1 THEN
  207.             GOSUB BADDRIVE1
  208.             GOTO GETPATH
  209.         END IF
  210.         UIPop 1
  211.     ELSEIF sz$ = "REACTIVATE" THEN
  212.         GOTO GETPATH
  213.     ELSEIF sz$ = "BACK" THEN
  214.         UIPop 1
  215.         GOTO WELCOME   ''NETWORK
  216.     ELSE
  217.         GOSUB ASKQUIT
  218.         GOTO GETPATH
  219.     END IF
  220.  
  221. '**************************************************************************
  222. '**      What is the network path to install the network components into **
  223. '**************************************************************************
  224.  
  225. IF NET$ = "ON" THEN
  226.  
  227.     SetSymbolValue "EditTextIn", ""
  228.     SetSymbolValue "EditFocus", "END"
  229. GETNETPATH:
  230.     SetSymbolValue "EditTextLimit", ""
  231.     sz$ = UIStartDlg(CUIDLL$, NETPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  232.     NETDEST$ = GetSymbolValue("EditTextOut")
  233.  
  234.     '' x% = InsightMessageBox("Network Path "+NETDEST$)
  235.  
  236.     IF sz$ = "CONTINUE" THEN
  237.         IF IsDirWritable(NETDEST$) = 0 THEN
  238.             GOSUB BADPATH
  239.             GOTO GETNETPATH
  240.         '' ELSEIF IsDriveLocalHard(MID$(NETDEST$,1,1)) = 1 THEN
  241.             '' sz1$ = UIStartDlg(CUIDLL$, BADDRIVE2, "FInfo0DlgProc", 0, "")
  242.             '' IF sz1$ = "BACK" THEN
  243.             ''     GOTO GETNETPATH
  244.             '' END IF
  245.             '' UIPop 1
  246.         END IF
  247.         UIPop 1
  248.     ELSEIF sz$ = "REACTIVATE" THEN
  249.         GOTO GETNETPATH
  250.     ELSEIF sz$ = "BACK" THEN
  251.         UIPop 1
  252.         GOTO PATHS
  253.     ELSE
  254.         GOSUB ASKQUIT
  255.         GOTO GETNETPATH
  256.     END IF
  257.  
  258. END IF            '' NET$
  259.  
  260.  
  261. '**************************************************************************
  262. '**      Get a CD-ROM drive letter                                       **
  263. '**************************************************************************
  264.  
  265.     IF DISKETTE$ = "0" THEN
  266.       SetSymbolValue "EditTextIn", "Z"
  267.     ELSE
  268.       SetSymbolValue "EditTextIn", "A"
  269.     END IF
  270.     SetSymbolValue "EditFocus", "END"
  271. GETDRIVE:
  272.     SetSymbolValue "EditTextLimit", "1"
  273.     IF DISKETTE$ = "0" THEN
  274.       sz$ = UIStartDlg(CUIDLL$, CDDRIVE, "FEditDlgProc", APPHELP, HELPPROC$)
  275.     ELSE
  276.       sz$ = UIStartDlg(CUIDLL$, DISKDRIVE, "FEditDlgProc", APPHELP, HELPPROC$)
  277.     END IF
  278.     DRIVE$ = GetSymbolValue("EditTextOut")
  279.  
  280.     IF sz$ = "CONTINUE" THEN
  281.         IF IsDriveValid(DRIVE$) = 0 THEN
  282.             GOSUB BADDRIVE
  283.             GOTO GETDRIVE
  284.         END IF
  285.         UIPop 1
  286.     ELSEIF sz$ = "REACTIVATE" THEN
  287.         GOTO GETPATH
  288.     ELSEIF sz$ = "BACK" THEN
  289.         UIPop 1
  290.         GOTO PATHS
  291.     ELSE
  292.         GOSUB ASKQUIT
  293.         GOTO GETDRIVE
  294.     END IF
  295.  
  296.     '' x% = InsightMessageBox ("After CD Drive")
  297.  
  298.     IF NET$ = "ON" THEN
  299.       dstdrive$ = MID$(NETDEST$,1,1)
  300.     ELSE
  301.       dstdrive$ = MID$(DEFDEST$,1,1)
  302.     END IF
  303.  
  304.     TMPDEST$ = dstdrive$ + ":\MYDEMO"
  305.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  306.     ndrive% = ASC(ucase$(dstdrive$)) - ASC("A") + 1
  307.  
  308.     IF REMOVE_PREVIOUS$ = "1" THEN
  309.       CursorSave% = ShowWaitCursor()
  310.       lastinstall$ = FindFileInTree(DDBFILE$+".IDX",dstdrive$+":\")
  311.       RestoreCursor CursorSave%
  312.       '' i% = InsightMessageBox("Last Install "+lastinstall$)
  313.       szRemove$ = GetDirectory(lastinstall$)
  314.       IF lastinstall$ <> "" THEN
  315.         i% = DoMsgBox("Previous version was found in "+szRemove$+" ! Remove that directory ?","Remove Previous Version",MB_ICONQUESTION+MB_YESNO)
  316.         IF i% = 6 THEN      '' IDYES id 6 in windows.h
  317.           '' i% = InsightMessageBox("before remove "+szRemove$)
  318.           i% = RemoveInsightFiles(szRemove$)
  319.         END IF
  320.       END IF
  321.     END IF
  322.  
  323.     IF VIDEO$ = "1" THEN
  324.       I% = DoesIniKeyExist (WinDir$ + "system.ini", "mci"    , "AVIVideo" )
  325.       IF I% <> 0 THEN
  326.           sz$ = UIStartDlg(CUIDLL$, VIDEOUPDATA, "FInfoDlgProc", APPHELP, HELPPROC$)
  327.           UIPop 1
  328.           IF sz$ = "EXIT" THEN
  329.               VIDEO$ = "0"
  330.           END IF
  331.       END IF
  332.     END IF
  333.  
  334. MAINOPTIONS:
  335.     IF DISKETTE = "0" THEN
  336.       GOSUB INSTOPTIONS
  337.     ELSE
  338.       GOSUB INSTDISKETTE
  339.     END IF
  340.  
  341.     GOTO QUIT
  342.  
  343. '**************************************************************************
  344. '**      Diskette installation                                           **
  345. '**************************************************************************
  346.  
  347. INSTDISKETTE:
  348.     ''OpenLogFile "C:\LOGFILE.OUT", 0
  349.     ClearCopyList
  350.     AddOptFilesToCopyList 0, SrcDir$, TMPDEST$
  351.     cost& = GetCopyListCost("" , "Costs", "Neededs")
  352.     OptCost$ = GetListItem ("Costs", ndrive%)
  353.     ''WriteToLogFile "Cost "+OptCost$
  354.     OptCost$ = STR$(VAL(OptCost$)/1000)
  355.     LeftAfter& = VAL(GetListItem("Neededs", ndrive%))
  356.  
  357.     IF  LeftAfter& > 0 THEN
  358.       x% = InsightMessageBox ("No space on disk")
  359.       RETURN
  360.     END IF
  361.  
  362.     Install 0 , SrcDir$ , DEFDEST$ , 0  '' Installation from diskettes
  363.  
  364.     IF VIDEO$ = "1" THEN
  365.         GOSUB WINRESTART
  366.     END IF
  367.  
  368.     ''CloseLogFile
  369.  
  370.     RETURN
  371.  
  372.  
  373.  
  374. '**************************************************************************
  375. '**      Calculate space required and get the desired configuration      **
  376. '**************************************************************************
  377.  
  378. INSTOPTIONS:
  379.     IF NETEXIST$ = "YES" THEN
  380.        GOTO HANDLEUSER
  381.     END IF
  382.  
  383.     CursorSave% = ShowWaitCursor()
  384.     '' OpenLogFile "C:\LOGFILE.OUT", 0
  385.  
  386.     SetSymbolValue "StatusItemsText", ""
  387.     SetSymbolValue "SpaceLeft", ""
  388.     FOR i% = 1 TO 3 STEP 1
  389.       ClearCopyList
  390.       AddOptFilesToCopyList i% , SrcDir$, TMPDEST$
  391.       cost& = GetCopyListCost("" , "Costs", "Neededs")
  392.       OptCost$ = GetListItem ("Costs", ndrive%)
  393.       OptCost$ = STR$(VAL(OptCost$)/1000)
  394.       AddListItem "StatusItemsText", OptCost$ + " K"
  395.       LeftAfter& = VAL(GetListItem("Neededs", ndrive%))
  396.       IF  LeftAfter& > 0 THEN
  397.         AddListItem "SpaceLeft", "0"
  398.         '*** Gray the option
  399.       ELSE
  400.         LeftAfter& = -LeftAfter&
  401.         AddListItem "SpaceLeft", STR$(LeftAfter&/1000)
  402.       END IF
  403.       '' WriteToLogFile STR$(i%) + " " + OptCost$ + " " + STR$(LeftAfter&)
  404.     NEXT i%
  405.  
  406.     RestoreCursor CursorSave%
  407.  
  408.     SetSymbolValue "RadioDefault", "3"
  409.     sp$ = "3"
  410.  
  411. CALC:
  412.     SetSymbolValue "Status", "Space left after installation " + GetListItem("SpaceLeft" , VAL(sp$)) + " K"
  413.     '' WriteToLogFile GetSymbolValue("Status")
  414.     sz$ = UIStartDlg(CUIDLL$, DISKSPACE, "FCust2DlgProc", APPHELP, HELPPROC$)
  415.     sp$  = GetSymbolValue ("ButtonChecked")
  416.     SetSymbolValue "RadioDefault", sp$
  417.  
  418.     IF sz$ = "CONTINUE" THEN
  419.         UIPop(1)
  420.     ELSEIF sz$ = "REACTIVATE" THEN
  421.         GOTO CALC
  422.     ELSEIF sz$ = "1" THEN
  423.         GOTO CALC
  424.     ELSEIF sz$ = "2" THEN
  425.         GOTO CALC
  426.     ELSEIF sz$ = "3" THEN
  427.         GOTO CALC
  428.     ELSE
  429.         GOSUB ASKQUIT
  430.         GOTO INSTOPTIONS
  431.     END IF
  432.  
  433.     LeftFinal& = VAL(GetListItem("SpaceLeft", VAL(sp$)))
  434.  
  435.     IF LeftFinal& < 2 THEN
  436.         i% = DoMsgBox("Not enough space for installation","Space Problem",MB_OK)
  437.         GOSUB ASKQUIT
  438.         GOTO INSTOPTIONS
  439.     END IF
  440.  
  441.     '' CloseLogFile
  442.  
  443.     IF NET$ = "ON" THEN
  444.         Install VAL(sp$) , SrcDir$ , NETDEST$ , 1
  445.         '' after this point insnet.inc with NETEXIST$="YES" exists in nework
  446.     ELSE
  447.         Install VAL(sp$) , SrcDir$ , DEFDEST$ , 0
  448.     END IF
  449.  
  450.     '' x% = InsightMessageBox ("Before Add User")
  451.  
  452. HANDLEUSER:
  453.     IF NET$ = "ON" THEN
  454.       '' Show Add User Dialog
  455.       SetSymbolValue "WorkIn", DEFDEST$
  456.       SetSymbolValue "NetIn", NETDEST$
  457.       SetSymbolValue "CdIn", DRIVE$
  458. GETNETPATHES:
  459.       sz$ = UIStartDlg(CUIDLL$, ADDUSER, "FEditNetPathesDlgProc", APPHELP, HELPPROC$)
  460.       WORK$ = GetSymbolValue("WorkOut")
  461.       NETDEST$ = GetSymbolValue("NetOut")
  462.       DRIVE$ = GetSymbolValue("CdOut")
  463.  
  464.       IF sz$ = "CONTINUE" THEN
  465.           IF DoesDirExist(NETDEST$) = 0 THEN
  466.               GOSUB BADPATH
  467.               GOTO GETNETPATHES
  468.           ELSEIF IsDriveValid(ucase$(MID$(WORK$,1,1))) = 0 THEN
  469.               GOSUB BADDRIVE
  470.               GOTO GETNETPATHES
  471.           ELSEIF IsDriveValid(ucase$(MID$(DRIVE$,1,1))) = 0 THEN
  472.               GOSUB BADDRIVE
  473.               GOTO GETNETPATHES
  474.           END IF
  475.           UIPop 1
  476.       ELSEIF sz$ = "REACTIVATE" THEN
  477.           GOTO GETNETPATHES
  478.       ELSE
  479.           GOSUB ASKQUIT
  480.           GOTO GETNETPATHES
  481.       END IF
  482.  
  483.       AddInsightUser WORK$,NETDEST$,DRIVE$
  484.     END IF
  485.  
  486.     IF VIDEO$ = "1"  THEN
  487.         GOSUB WINRESTART
  488.     END IF
  489.  
  490.     RETURN
  491.  
  492. WINRESTART:
  493.     '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  494.     '' else, it gives the user the choice
  495.     RESTRT% = RestartListEmpty ()
  496.     Exe$   =  GetWindowsDir() + "_msrstrt.exe"
  497.     Batch$ =  GetWindowsDir() + "_mssetup.bat"
  498.     empty$ = ""
  499.  
  500. RESTART:
  501.     IF RESTRT% = 0 THEN
  502.        sz$ = UIStartDlg(cuidll$, RESTARTI, "FInfo0DlgProc", 0, "")
  503.        IF sz$ = "REACTIVATE" THEN
  504.           GOTO RESTART
  505.        ENDIF
  506.        I% = ExitExecRestart ()
  507.        RemoveFile Exe$, cmoForce
  508.        RemoveFile Batch$, cmoForce
  509.        END
  510.     ELSE
  511.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  512.        IF sz$ = "CONTINUE" THEN
  513.           I% = ExitWindowsExec (Exe$, empty$)
  514.           IF I% = 0 THEN
  515.              GOTO RESTART
  516.           ELSE
  517.              END
  518.          ENDIF
  519.        ELSEIF sz$ = "EXIT" THEN
  520.           UIPopAll
  521.           END
  522.        ELSEIF sz$ = "REACTIVATE" THEN
  523.           GOTO RESTART
  524.        ELSE
  525.           UIPop 1
  526.        END IF
  527.     END IF
  528.  
  529.     RETURN
  530.  
  531. QUIT:
  532.     ON ERROR GOTO ERRQUIT
  533.  
  534.     IF ERR = 0 THEN
  535.         dlg% = EXITSUCCESS
  536.     ELSEIF ERR = STFQUIT THEN
  537.         dlg% = EXITQUIT
  538.     ELSE
  539.         dlg% = EXITFAILURE
  540.     END IF
  541. QUITL1:
  542.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  543.     IF sz$ = "REACTIVATE" THEN
  544.         GOTO QUITL1
  545.     END IF
  546.     UIPop 1
  547.  
  548.     END
  549.  
  550. ERRQUIT:
  551.     i% = DoMsgBox("Setup sources were corrupted, call 777-7777!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  552.     END
  553.  
  554.  
  555.  
  556. BADPATH:
  557.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  558.     IF sz$ = "REACTIVATE" THEN
  559.         GOTO BADPATH
  560.     END IF
  561.     UIPop 1
  562.     RETURN
  563.  
  564. BADDRIVE:
  565.     sz$ = UIStartDlg(CUIDLL$, BADDRIVE, "FInfo0DlgProc", 0, "")
  566.     IF sz$ = "REACTIVATE" THEN
  567.         GOTO BADDRIVE
  568.     END IF
  569.     UIPop 1
  570.     RETURN
  571.  
  572. BADDRIVE1:
  573.     sz$ = UIStartDlg(CUIDLL$, BADDRIVE1, "FInfo0DlgProc", 0, "")
  574.     IF sz$ = "REACTIVATE" THEN
  575.         GOTO BADDRIVE1
  576.     END IF
  577.     UIPop 1
  578.     RETURN
  579.  
  580. BADDRIVE2:
  581.     sz$ = UIStartDlg(CUIDLL$, BADDRIVE2, "FInfo0DlgProc", 0, "")
  582.     IF sz$ = "REACTIVATE" THEN
  583.         GOTO BADDRIVE2
  584.     END IF
  585.     UIPop 1
  586.     RETURN
  587.  
  588.  
  589.  
  590. ASKQUIT:
  591.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  592.  
  593.     IF sz$ = "EXIT" THEN
  594.         UIPopAll
  595.         ERROR STFQUIT
  596.     ELSEIF sz$ = "REACTIVATE" THEN
  597.         GOTO ASKQUIT
  598.     ELSE
  599.         UIPop 1
  600.     END IF
  601.     RETURN
  602.  
  603.  
  604.  
  605. '**
  606. '** Purpose:
  607. '**     Builds the copy list and performs all installation operations.
  608. '** Arguments:
  609. '**     none.
  610. '** Returns:
  611. '**     none.
  612. '*************************************************************************
  613. SUB Install (ftype%,Src$,Dest$,fnet%) STATIC
  614.  
  615.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  616.     CreateDir Dest$, cmoNone
  617.  
  618.     OpenLogFile MakePath(Dest$, "LOGFILE.OUT"), 0
  619.  
  620.     '***************************************************'
  621.     '** Copy DLL to local windows directory           **'
  622.     '***************************************************'
  623.  
  624.     ''IF fnet% = 0 THEN
  625.     ''    bwcc$ = MakePath(SrcDir$,"BWCC.DLL")
  626.     ''    CopyFile bwcc$,GetWindowsSysDir()+"BWCC.DLL",cmoOverwrite,0
  627.     ''    scale$ = MakePath(SrcDir$,"SCALEBAR.DLL")
  628.     ''    CopyFile scale$,GetWindowsSysDir()+"SCALEBAR.DLL",cmoOverwrite,0
  629.     ''    insbtn$ = MakePath(SrcDir$,"INSBTN.DLL")
  630.     ''    CopyFile insbtn$,GetWindowsSysDir()+"INSBTN.DLL",cmoOverwrite,0
  631.     ''END IF
  632.  
  633.     ini$ = GetWindowsDir()+"INSIGHT.INI"
  634.  
  635.     '**************************************************************************
  636.     '**      Copy relevant files to hard disk                                **
  637.     '**************************************************************************
  638.  
  639.     SetRestartDir WinDir$
  640.     ClearCopyList
  641.     AddOptFilesToCopyList ftype%,Src$,Dest$
  642.     IF fnet% = 1 THEN
  643.         AddSectionFilesToCopyList "Setup", Src$, Dest$
  644.     END IF
  645.  
  646.     i% = SetCopyMode(1)
  647.     SetCopyGaugePosition -1,90
  648.     CopyFilesInCopyList
  649.  
  650.     IF fnet% = 1 THEN
  651.         '' i% = InsightMessageBox("Before Open")
  652.         OPEN MakePath(Dest$,"INSNET.INC") FOR OUTPUT AS #2
  653.         PRINT #2 , "NETEXIST$=""YES"""
  654.         CLOSE #2
  655.         '' i% = CreateInsNet(Dest$+"INSNET.INC")
  656.         GOTO ENDINSTALL
  657.     END IF
  658.  
  659.     '**************************************************************************
  660.     '**      Modify .DDB                                                     **
  661.     '**************************************************************************
  662.  
  663.     DDBOUTFILE$ = MakePath(Dest$,DDBFILE$+".DDB")
  664.  
  665.     IF DISKETTE$ = "1" THEN                 '' copy .DDB to .TMP
  666.       DDBINFILE$ = MakePath(Dest$,DDBFILE$+".TMP")
  667.       CopyFile DDBOUTFILE$,DDBINFILE$,cmoOverwrite,0        '' DDB -> TMP
  668.     ELSE
  669.       DDBINFILE$ = DRIVE$+":\"+DDBFILE$+".DDB"
  670. ''    DDBINFILE$ = DRIVE$+":\setup\"+DDBFILE$+".DDB"   '' For DEBUG ONLY
  671.     END IF
  672.  
  673.     WriteToLogFile "In:  "+DDBINFILE$
  674.     WriteToLogFile "Out: "+DDBOUTFILE$
  675.  
  676.     IF DISKETTE$ = "0" THEN
  677.       i% = ModifyDDB(DDBINFILE$, DDBOUTFILE$, 0)
  678.     ELSE
  679.       i% = ModifyDDB(DDBINFILE$, DDBOUTFILE$, 1)
  680.     END IF
  681.  
  682.     x% = RebuildBigFiles( Dest$ )
  683.  
  684.     '**************************************************************************
  685.     '**      Create Insight Group (or end product group)                     **
  686.     '**************************************************************************
  687.  
  688.     CreateProgmanGroup PROGMAN_GROUP$, "", cmoNone
  689.     ShowProgmanGroup   PROGMAN_GROUP$, 1, cmoNone
  690.  
  691.     '**************************************************************************
  692.     '**      Create Product Icon (Program Manager Item)                      **
  693.     '**************************************************************************
  694.  
  695.     ins$ = MakePath(Dest$,"insight.exe")
  696.     WORKING$ = Dest$
  697.     IF PUBLISHER_ICON$ = "1" THEN
  698.       iconpath$ = MakePath(WORKING$,"ICON.ICO")
  699.       wd$ = iconpath$+",0,,,"+WORKING$
  700.       '' i% = DoMsgBox("wd - "+wd$,"DEBUG",MB_OK)
  701.     ELSE
  702.       wd$ = ",,,,"+WORKING$
  703.     END IF
  704.     CreateProgmanItem PROGMAN_GROUP$, PROGMAN_ITEM$, ins$+" /r "+DDBFILE$+".ddb" , wd$, cmoOverwrite
  705.  
  706.     IF VIDEO$ = "1" THEN
  707.  
  708.       ''Updating WIN.INI and SYSTEM.INI
  709.       IF VflatdPresent() = 0 THEN
  710.          CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  711.       END IF
  712.       CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  713.       CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  714.       CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "indeov.drv", cmoOverwrite
  715.       CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  716.       I% = DoesIniKeyExist (WinDir$ + "system.ini", "Drivers", "VIDC.RT21")
  717.       IF I% = 0  THEN
  718.          CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "indeov.drv", cmoOverwrite
  719.       END IF
  720.       CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "indeov.drv", cmoOverwrite
  721.       CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  722.       CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  723.       CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  724.       CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  725.       CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  726.       CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  727.       CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  728.       CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  729.       Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  730.       Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  731.       Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  732.  
  733.       '' Mplayer
  734.       CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  735.  
  736.       Run ("profdisp.exe")
  737.  
  738.     END IF '' VIDEO
  739.  
  740.     CloseLogFile
  741. ENDINSTALL:
  742.      IF fnet% = 1 THEN   
  743.         infsrc$ = MakePath(Src$,"INSIGHT.INF")
  744.         infdst$ = MakePath(Dest$,"INSIGHT.INF")
  745.         CopyFile infsrc$,infdst$,cmoOverwrite,0
  746.         incsrc$ = MakePath(Src$,"INSIGHT.INC")
  747.         incdst$ = MakePath(Dest$,"INSIGHT.INC")
  748.         CopyFile incsrc$,incdst$,cmoOverwrite,0
  749.      END IF 
  750.  
  751. END SUB
  752.  
  753. SUB AddInsightUser (wrkparm$,netparm$,cd$) STATIC
  754.     CreateDir wrkparm$, cmoNone
  755.     DDBINFILE$ = MakePath(netparm$,DDBFILE$+".DDB")
  756.     DDBOUTFILE$ = MakePath(wrkparm$,DDBFILE$+".DDB")
  757.     '' i% = DoMsgBox("Out File is "+DDBOUTFILE$, "DEBUG", MB_ICONHAND+MB_OK)
  758.     i% = ModifyNetDDB(DDBINFILE$,DDBOUTFILE$,cd$)
  759.  
  760.     CursorSave% = ShowWaitCursor()
  761.     annotsrc$ = MakePath(netparm$,"ANNOT.IDX")
  762.     annotdst$ = MakePath(wrkparm$,"ANNOT.IDX")
  763.     
  764.     CopyFile annotsrc$,annotdst$,cmoOverwrite,0
  765.  
  766.     RestoreCursor CursorSave%
  767.  
  768.     CreateProgmanGroup PROGMAN_GROUP$, "", cmoNone
  769.     ShowProgmanGroup   PROGMAN_GROUP$, 1, cmoNone
  770.  
  771.     ins$ = MakePath(netparm$,"insight.exe")
  772.     WORKING$ = netparm$
  773.     IF PUBLISHER_ICON$ = "1" THEN
  774.       iconpath$ = MakePath(netparm$,"ICON.ICO")
  775.       wd$ = iconpath$+",0,,,"+WORKING$
  776.       '' i% = DoMsgBox("wd - "+wd$,"DEBUG",MB_OK)
  777.     ELSE
  778.       wd$ = ",,,,"+WORKING$
  779.     END IF
  780.     CreateProgmanItem PROGMAN_GROUP$, PROGMAN_ITEM$, ins$+" /r "+DDBOUTFILE$ , wd$, cmoOverwrite
  781. END SUB
  782.  
  783. '**
  784. '** Purpose:
  785. '**     Adds the specified option files to the copy list.
  786. '** Arguments:
  787. '**     ftype%  - type of files to add, one of the following:
  788. '**             BASIC, FAST, VERYFAST
  789. '** Returns:
  790. '**     none.
  791. '*************************************************************************
  792. SUB AddOptFilesToCopyList (ftype%,Src$,Dest$) STATIC
  793.     IF VIDEO = "1" THEN
  794.       AddSectionFilesToCopyList "VfW Runtime", Src$, WinSysDir$
  795.       AddSectionFilesToCopyList "OLE2", Src$, WinSysDir$
  796.       AddSectionFilesToCopyList "ACM Drivers", Src$, WinSysDir$
  797.       AddSectionFilesToCopyList "MPlayer", Src$, WinDir$
  798.       AddSectionFilesToCopyList "AVICodecs", Src$, WinSysDir$
  799.       AddSectionFilesToCopyList "Indeo-ini", Src$, WinDir$
  800.     END IF
  801.  
  802.     IF ftype% = 0 THEN
  803.       AddSectionFilesToCopyList "DLL", Src$, Dest$
  804.       AddSectionFilesToCopyList "Files", Src$, Dest$
  805.       GOTO ENDADD
  806.     END IF
  807.  
  808.     AddSectionFilesToCopyList "Files", Src$, Dest$
  809.     AddSectionFilesToCopyList "DLL", Src$, Dest$
  810.     AddSectionFilesToCopyList "Basic", Src$, Dest$
  811.     IF ftype% > BASIC THEN
  812.       AddSectionFilesToCopyList "Fast", Src$ , Dest$
  813.       IF ftype% > FAST THEN
  814.         AddSectionFilesToCopyList "Fastest", Src$ , Dest$
  815.       END IF
  816.     END IF
  817. ENDADD:
  818. END SUB
  819.  
  820. '**
  821. '** Purpose:
  822. '**     Appends a file name to the end of a directory path,
  823. '**     inserting a backslash character as needed.
  824. '** Arguments:
  825. '**     szDir$  - full directory path (with optional ending "\")
  826. '**     szFile$ - filename to append to directory
  827. '** Returns:
  828. '**     Resulting fully qualified path name.
  829. '*************************************************************************
  830. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  831.     IF szDir$ = "" THEN
  832.         MakePath = szFile$
  833.     ELSEIF szFile$ = "" THEN
  834.         MakePath = szDir$
  835.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  836.         MakePath = szDir$ + szFile$
  837.     ELSE
  838.         MakePath = szDir$ + "\" + szFile$
  839.     END IF
  840. END FUNCTION
  841.  
  842. FUNCTION GetDirectory(szPath$) STATIC AS STRING
  843.     IF szPath$ = "" THEN
  844.         GetDirectory = ""
  845.     ELSE
  846.         FOR i% = LEN(szPath$) TO 1 STEP -1
  847.             IF MID$(szPath$,i%,1) = "\" THEN
  848.                 GOTO FINISHGETDIRECTORY
  849.             END IF
  850.         NEXT i%
  851. FINISHGETDIRECTORY:
  852.         GetDirectory = MID$(szPath$,1,i%-1)
  853.     END IF
  854. END FUNCTION
  855.